python-3.x - 如何在 Python 中附加单个字典键 (1_key : [N_values]) 的值列表?
问题描述
我正在尝试从 .txt 文件在 Python 中生成一个 {single-key : [multi-value]} 字典。
这是文本文件(制表符分隔),
A02.835.583.748 A02.880 0.818181818181818
A02.835.583.748 A02.513 0.818181818181818
A02.835.583.748 A01.378.800.750 0.636363636363636
A02.835.583 A02.880 0.863636363636364
A02.835.583 A02.513 0.863636363636364
A02.835.583 A01.378.800.750 0.681818181818182
A01.378.800.750 A02.880 0.727272727272727
A01.378.800.750 A02.513 0.727272727272727
A01.378.800.750 A01.378.800.750 1
同样,我使用“defaultdict()”函数,但不知何故我无法正确生成字典。我可以通过这个生成字典,但这很奇怪。因此,我从这本奇怪的字典中获取其中一个键。
print(anaDict.get('A02.835.583.748'))
输出:
['A02.880=0.818181818181818', [...], ['A02.513=0.818181818181818'], ['A01.378.800.750=0.636363636363636']]
然而,这个字典中的 [...] 实际上是以一种初始的方式嵌套同一个键的其他值。
我写的代码,
anaDict = defaultdict()
anaSet = set()
with open(f, 'r') as anaFile:
if '148' in f:
for line in anaFile:
key = line.split('\t')[0].rstrip()
conclusionVal = line.split('\t')[1].strip()
simScore = line.split('\t')[2].strip()
value = [conclusionVal + "=" + simScore]
if key not in anaDict:
print("Here it goes: " , key, value)
anaDict[key] = value
if key in anaDict:
print("Different value: ", key, value)
anaDict[key].append(value)
print(anaDict.get('A02.835.583.748'))
我希望代码生成以下字典(显示为键值对)。
A02.835.583.748 : [A02.880 = 0.818181818181818 , A02.513 = 0.818181818181818, A01.378.800.750 = 0.636363636363636]
A02.835.583 : [A02.880 = 0.863636363636364, A02.513 = 0.863636363636364, A01.378.800.750 = 0.681818181818182]
A01.378.800.750 : [A02.880 = 0.727272727272727, A02.513 = 0.727272727272727, A01.378.800.750 = 1]
我无法弄清楚我做错了什么。我会为任何帮助或方向提供帮助。
解决方案
这行是你的问题:
anaDict[key].append(value)
当您使用 时list#append
,您将整个参数放入列表中。但是由于您要传递一个列表,因此您将一个列表放入列表中。您所描述的想要做的是附加参数列表中的所有值,而不是列表本身。您所要做的就是替换append
为extend
.
anaDict[key].extend(value)
然后你告诉解释器解包参数列表并附加每个值。
推荐阅读
- angularjs - ng-click 不会调用 angularJs 控制器中的方法
- react-native - React-Native Expo:如何保持应用程序标签栏显示在应用程序内浏览器上?
- r - 使用 dplyr 的 select 和 Everything() 重新排列变量
- c# - UWP NavigationView 未与标题栏后退按钮对齐
- php - 将 SQL 数据库中的约束提取到 PHP 中的 JSON
- python-3.x - 使用 xarray 更改坐标系以进行切片操作
- php - 使用变量键名访问 php 中的 $_GET / $_POST 数据
- python - 映射一个字符串获取每个单词的长度并附加到一个带有条件的新单词
- javascript - Vue js 组件中的方法
- scala - scala.collection.immutable.Vector 不能转换为