Python字典遍历技巧与实践

版权申诉
0 下载量 123 浏览量 更新于2024-10-15 收藏 72KB ZIP 举报
资源摘要信息:"Python之遍历dict共2页.pdf" 这份文档标题为"Python之遍历dict共2页.pdf",涵盖了Python编程语言中字典(dict)对象的遍历方法。字典是一种可变容器模型,且可存储任意类型对象。在Python中,字典以键值对(key-value pairs)的形式存储数据,这种结构在需要将一对数据(如字符串和数字)相关联时非常有用。字典是无序的数据类型,这意味着存储在字典中的数据没有特定的顺序。 遍历字典是编程中一个常见的操作,它指的是按照某种方式访问字典中的每一个元素。在Python中,有多种方法可以遍历字典,下面将详细说明这些方法: 1. 使用keys(), values()和items()方法遍历: - keys():返回字典中所有的键。 - values():返回字典中所有的值。 - items():返回字典中所有的键值对(key-value pairs),每个元素都是一个元组。 例如: ```python for key in my_dict.keys(): print(key, my_dict[key]) for value in my_dict.values(): print(value) for key, value in my_dict.items(): print(key, value) ``` 2. 使用for循环直接遍历: 在Python 3中,直接使用for循环遍历字典默认是遍历字典的键。 ```python for key in my_dict: print(key, my_dict[key]) ``` 3. 使用while循环遍历: 如果需要使用while循环遍历字典,可以通过获取字典键的列表或迭代器来实现。 ```python keys = list(my_dict.keys()) i = 0 while i < len(keys): print(keys[i], my_dict[keys[i]]) i += 1 ``` 4. 使用字典的get方法: get方法可以安全地访问字典中的值,如果键不存在字典中,可以返回一个默认值。 ```python for key in my_dict.keys(): value = my_dict.get(key, "默认值") print(key, value) ``` 5. 使用排序方法遍历: 如果需要按照特定的顺序遍历字典中的键,可以使用sorted()函数对键进行排序。 ```python for key in sorted(my_dict.keys()): print(key, my_dict[key]) ``` 6. 使用enumerate进行遍历: 如果需要在遍历字典时跟踪当前处理的项的索引,可以使用enumerate()函数。 ```python for index, (key, value) in enumerate(my_dict.items()): print(index, key, value) ``` 遍历字典通常用于查找、更新或删除字典中的元素。在实际应用中,字典的遍历会结合条件语句来实现对特定键值对的操作。 需要注意的是,由于字典的无序性,遍历的顺序可能与添加元素的顺序不同,除非使用了某些方法来维持顺序,比如Python 3.7及以上版本中字典保持插入顺序。 由于文档描述中没有提供更详细的内容,以上知识点基于Python字典遍历的基础知识进行说明。如果文档中还包含更高级的遍历技巧、性能比较、典型应用场景或注意事项等内容,建议打开压缩包中的PDF文件进行详细阅读。

# 导入pandas库 import pandas as pd # 读取excel文件的两个sheet sheet1 = pd.read_excel("对照组.xlsx", sheet_name="idle_transition_probability") sheet2 = pd.read_excel("对照组.xlsx", sheet_name="hexagon_grid_table") # 把sheet转换成字典列表 sheet1 = sheet1.to_dict(orient="records") sheet2 = sheet2.to_dict(orient="records") # 创建一个空的字典,用来存储区域id和坐标的对应关系 area_dict = {} # 选择sheet1的第2列和第3列 sheet1 = sheet1.iloc[:, [1, 2]] # 把sheet1的第2列和第3列的数据转换成列表 start_area_list = sheet1.iloc[:, 0].tolist() end_area_list = sheet1.iloc[:, 1].tolist() # 用zip函数把两个列表组合成一个迭代器 area_pairs = zip(start_area_list, end_area_list) # 用for循环遍历每一对上下车地点所在区域的id for start_area, end_area in area_pairs: # 根据id从字典中获取对应的坐标 start_coord = area_dict[start_area] end_coord = area_dict[end_area] # 遍历sheet2,把区域id作为键,坐标作为值,存入字典中 for row in sheet2: area_id = row["格子ID"] longitude = row["中心经度"] latitude = row["中心维度"] area_dict[area_id] = (longitude, latitude) # 创建一个空的列表,用来存储每个时间段的曼哈顿距离 distance_list = [] # 计算两个坐标之间的x轴距离和y轴距离 x_distance = abs(end_coord[0] - start_coord[0]) y_distance = abs(end_coord[1] - start_coord[1]) # 计算两个坐标之间的曼哈顿距离,并添加到列表中 manhattan_distance = x_distance + y_distance distance_list.append(manhattan_distance) # 创建一个空的DataFrame df = pd.DataFrame() # 把列表添加到DataFrame中,指定列名 df["曼哈顿距离"] = distance_list # 把DataFrame保存到Excel文件中,指定文件名和sheet名 df.to_excel("result.xlsx", sheet_name="result")请你帮我修改一下

2023-05-25 上传